Certain high-level languages, such as MATLAB, are used for prototyping algorithms in domains such as signal and image processing, simulation, analysis, etc. In particular, MATLAB provides users with extensive libraries of high quality routines, as well as high-level matrix-based syntax for expressing computations in a concise manner, i.e., than available from conventional languages, e.g., C, Fortran.
However, because MATLAB is an interpretive language, programs thereof incur high overhead during runtime. Thus, users developing applications for parallel heterogeneous systems often prototype algorithms in MATLAB, then manually develop algorithms in C, assembly language for DSPs (Digital Signal Processors), embedded processors or in VHDL (VHSIC Hardware Description Language) or Verilog for synthesis and implementation on FPGAs (Field Programmable Gate Arrays) or ASICS (Application Specific Integrated Circuits). Such a manual process is tedious, inefficient, time-consuming, expensive, and unoptimal. Moreover, as hardware designs become faster and include more devices, improved software is needed for hardware synthesis.